! Revision 1.1 ! **** Initial inventory **** Object bijl "battle axe" with description "For this fight you have brought your heaviest battle axe. Few beside you could even lift it, let alone handle it with lethal speed and precision.", name 'axe' 'battle' 'battle-axe' 'weapon', has ; Object harnas "full suit of armour" with description [; if(verhaaltracker.brand == 0) "You wouldn't want to face the monster without a full suit of armour, thick plate over chainmail, generously oiled, granting optimal protection against all kinds of physical attack. The suit has been fastened with leather straps at the back."; "Even the steel of the armour is melting in the heat of the dragon's fires. White hot drops of liquid metal force their way through your skin like murderous knives."; ], name 'armour' 'suit' 'of' 'full' 'straps' 'leather' 'chainmail', before [; Disrobe: "You can't take off the suit of armour yourself; it is secured with leather straps fastened around your back. After you have defeated the dragon, you will return through the bronze doors and your squire will help you."; ], has worn clothing; Object helm "helmet" with description [; if(self has open) "A practical helmet, without fancy plumes or spikes. The visor is open, leaving your sight unobstructed but exposing your face to attack."; else "A practical helmet, without fancy plumes or spikes. The visor is closed, giving maximal protection."; ], before [; Open: if(self has open) "The visor is already open."; else {give self open; "You open the visor of the helmet.";} return true; Close: if(self hasnt open) "The visor is already closed."; else {give self ~open; "You close the visor of the helmet.";} return true; Disrobe: if(parent(helm) == player) { give helm ~worn; if(parent(bijl) == player) {move helm to parent(player); "You take off the helmet and put it on the floor. You feel quite vulnerable without it.";} else "You take off the helmet; you feel quite vulnerable without it."; } Drop: if(parent(helm) == player) { if(helm has worn) { print "You take off the helmet and put it on the floor. You feel quite vulnerable without it."; } else { print "You carefully place the helmet on the floor."; } give helm ~worn; move helm to parent(player); ""; } Take: if(parent(bijl) == player && parent(helm) ~= player) {give helm worn; move helm to player; "You gather up the helmet and replace it over your head.";} else return false; Wear: if(TestScope(helm,player)) { if(parent(helm) == player) "You are already wearing the helmet."; move helm to player; give helm worn; "You replace the helmet on your head."; } ], name 'helmet' 'visor', has worn clothing open openable; ! **** Location: grot **** Object grot_hal "The bone-strewn vestibule" with description [; if(verhaaltracker.brand == 0) "This small rectangular hall has been chiselled painstakingly from the rock. The walls and ceiling are covered with slabs of black marble. Two bronze doors seal off the exit to the south, while to the north a narrow passageway leads on to the dragon's fiery lair. Blackened bones and skulls litter the floor, casting long shadows in the flickering light."; "Through the flames you can discern black marble walls, bones littering the floor, and two bronze doors that guard the only exit."; ], name 'vestibule' 'hall' 'small', n_to grot_grot, before [; Go: if(noun == n_to) {Grot_Hal_N();}; Smell: "The penetrating smell of sulphur fills the entire cave."; Listen: "From the north you hear restless snarling."; ], has light transparent; [ Grot_Hal_N; if(verhaaltracker.brand == 0) { print "You try to step around the human bones, but with each step several are crushed under the combined weight of you and your armour.^"; return false; } else { "You run around aimlessly, crushing the bones of those who fared no better against the dragon than you did."; } ]; Object grot_deuren "bronze doors" grot_hal class Prop, with name 'doors' 'bronze' 'two' 'door', description "Two massive bronze doors block the cave's exit. The likeness of a burning man has been engraved on them.", before [; Open: "The doors have been bolted from the other side, and not even the dragon could open them from here. In fact, that is the entire point. You have been instructed to knock after you have defeated the dragon."; Close: "The doors are already closed."; Lock, Unlock: "There is no keyhole apparent."; Knock: if(verhaaltracker.brand == 0) { "Before you have even tried to kill the dragon? You are no coward."; } else { print "You run towards the doors in blind panic. The burning man in the bronze relief looks at you with laughing eyes, his ecstatic grin mocking your tortured cries. ~Enjoy the heat!~, he seems to be saying. ~You will learn to love it!~ You hit him as hard as you can with the steel glove on your right hand; a tremendous sound, harrowingly dissonant, resounds through the cave."; VraagToets(0,0,0); print "But the doors do not move. Nobody comes to open them. Again, screaming--the heat of the flames vaporising the blood in your veins--you hit the door with all the force you can muster; and again the harsh sound rings out, like Satan beating a gong in the depths of Hell--but again the door remains immobile. You try to knock once more, but your knees buckle, your legs fold beneath you and you hit the ground... you cannot think through the pain, the heat... you can only see darkness..."; EndSceneOne(); return true; } Attack: <>; ], has ~open openable pluralname; Object grot_man "burning man" grot_hal class Prop, with name 'burning' 'man' 'picture' 'engraving' 'depiction', description [; if(verhaaltracker.brand > 0) "Instead of the pain you would expect on the face of a burning man, the graven figure's expression speaks of craving and desire. To your horror, you realise that your own face bears a similar expression."; "Instead of the pain you would expect on the face of a burning man, the graven figure's expression speaks of craving and desire. He does not suffer from the flames, but basks in them."; ], has male; Object grot_hal_vuur "fire" grot_hal class Prop, with name 'fire' 'flames' 'light', description "You see vast, leaping flames beyond the passageway. Their heat can be felt even here.", before [; Doof: if(verhaaltracker.brand == 0) {"You cannot extinguish such a sea of fire.";} else "In dismay, you beat on the flames. But to no avail--they only appear to grow bigger and hotter."; ], has ; Object grot_marmer "marble" grot_hal class Prop, with name 'marble' 'black' 'sheets' 'walls' 'wall' 'ceiling' 'rock' 'slab' 'slabs', description "The walls and the ceiling of the hall are covered with smooth sheets of black marble. White veins running through them form intricate patterns.", has ; Object grot_aders "pattern" grot_hal class Prop, with name 'vein' 'veins' 'pattern' 'patterns' 'lines' 'white', description "As you let your gaze dwell over the patterns, you are struck by the thought that they somehow encode a meaning, that beneath their apparent chaos lies the solution to a grave mystery. But before you can even start understanding them, the lines begin to move, to spin, to swirl--you feel dizziness overtaking you, and quickly focus your eyes elsewhere.", has pluralname; Object grot_botten "bones" grot_hal class Prop, with name 'bones' 'bone' 'skulls' 'skull' 'remains' 'skeleton' 'skeletons' 'ground' 'floor', description "The ground is covered by bones and skulls, blackened but otherwise untouched by the fire that consumed the flesh they once bore.", before [; Take: "You don't like to be reminded of the failure of those who came before you."; ], has pluralname; Object grot_schaduwen "shadows" grot_hal class Prop, with name 'shadows' 'shadow' 'flickering', description "The shadows of the bones take on macabre forms.", has pluralname; Object grot_grot "A low passage" with description [; if(verhaaltracker.brand == 0) "The passageway is very low, making you stoop as you walk through. A thick layer of ashes covers the floor. Fierce light and massive waves of heat come from the north, where huge flames fill the dragon's cave. You are sweating heavily inside your armour--and not entirely through the heat. To the south lies the coolness of the vestibule."; "Only the broadest geography of your surroundings is visible through the flames that envelop you. To the north: the dragon; to the south: the exit."; ], name 'passage' 'passageway' 'cave', n_to grot_zaal, s_to grot_hal, before [; Go: if(noun == s_to) {Grot_Grot_S();} else if(noun == n_to) {Grot_Grot_N();}; Listen: "You hear movement from the north: the shambling of a sluggish beast."; Examine: if(noun == n_obj) "The dragon lives in a gigantic hall. Many stories are told about how it came to be there, but truth be told, nobody really knows. Among the wise it is whispered that the dragon is as old as the Earth itself."; Smell: "The penetrating smell of sulphur fills the entire cave."; ], has light transparent; [ Grot_Grot_S; if(verhaaltracker.brand == 0) { print "Bones crunch under your feet as you walk back into the vestibule.^"; return false; } else { "You frantically run back to the vestibule, bones breaking under each of your steps."; } ]; [ Grot_Grot_N; if(verhaaltracker.brand == 0) { if(parent(bijl) == player) {print "Holding the axe tightly, ";} else {print "Unarmed, ";}; if(parent(helm) == player && helm hasnt open) print "the visor of your helmet closed--less honourable, but more prudent--, "; if(parent(helm) == player && helm has open) print "the visor of your helmet opened, as behooves a man of honour, "; if(parent(helm) ~= player) print "brave and gallant, without your helmet, "; print "you approach the dragon.^"; return false; } else { "Screaming and crying, no room in your mind for thought, you run back to the dragon's hall."; } ]; Object grot_as "thick layer of ashes" grot_grot class Prop, with description "A layer of tamped down ashes covers the ground; your feet leave hardly an impression.", name 'ash' 'layer' 'thick' 'ground' 'floor' 'ashes', before [; Take: "You bend down to the ground and scrape at the ashes with your armoured fingers, but they are compacted so tightly that almost nothing comes loose."; ], has ; Object grot_fake_draak "dragon" grot_grot with name 'dragon', description "The dragon is in the large hall to the north.", before [; Examine: return false; default: "You will first have to enter the hall to the north."; ], life [; default: "You will first have to enter the hall to the north."; ], has male animate scenery; Object grot_voetstap "footprints" grot_grot class Prop, with description "Your footprints are only just visible in the ashes.", name 'footprint' 'footprints' 'impression' 'impressions' 'footsteps' 'footstep', has pluralname; Object grot_grot_vuur "fire" grot_grot class Prop, with name 'fire' 'flames' 'light' 'flame', description "Flames bigger than men illuminate the hall to the north.", before [; Doof: if(verhaaltracker.brand == 0) {"You cannot extinguish such a sea of fire.";} else "In dismay, you beat on the flames. But to no avail--they only appear to grow bigger and hotter."; ], has ; Object grot_zaal "Huge underground hall" with description [; if(verhaaltracker.brand == 0) "This hall--apparently a natural cave--is huge, much bigger than even the Emperor's throne room. The floor is covered with thick layers of ash, except where huge flames shoot upwards out of cracks and fissures that cleave the rock. The heat here is almost unbearable."; "Through the fire that surrounds you, you see only flashes of the hall--flames, cracks, the passageway, and--closing in on you--the infernal monster."; ], name 'hall' 'large' 'gigantic' 'underground' 'huge', s_to grot_grot, cant_go [; if(verhaaltracker.brand > 0) { print "You run around aimlessly, overwhelmed by fear and despair. You cannot see where you are going; everything is fire, flames, smoke, pain, flickering light. You trip, you fall, you jump up again--the fear drives you on and on. You stagger in a random direction; then, suddenly, a step into nothingness and you fall down into one of the large clefts in the ground. You desperately try to grab something, anything, to hold on to--but the walls are flat and featureless, and nothing stops you from tumbling deeper and deeper into the earth. Smoke and sulfid vapours fill the air and with each breath the agony of your lungs increases. You lose consciousness long before you hit the ground.^"; EndSceneOne(); return true; }; "The only exit lies to the south."; ], initial [; if(verhaaltracker.draak == 0) { verhaaltracker.draak = 1; StartDaemon(grot_draak); } ], before [; Smell: "The penetrating smell of sulphur fills the entire cave."; Listen: "The dragon sniffs angrily, then roars."; ], has light transparent; Object grot_draak "dragon" grot_zaal with description "You thought you expected the worst, but you were not prepared for this. Yes, it is large--at least thirty meters from the tip of its tail to its evil head--but you have fought large monsters before. Yes, its angry red scales gleam like hard steel and look as if no normal weapon could pierce them--but your axe is no normal weapon. But the fire in its eyes and its throat, the play of flames behind the dragon's rows of pale teeth, seems suddenly more horrifying than anything you ever saw before. This is not just another monster with fiery breath. This is not even an elemental, those mindless creatures that embody the very forces of nature. No--this is more terrifying, more intimate, more evil--something indomitable, something that will never yield and that can never be exploited, that unlike nature's laws will not yield to the desires of men--for you recognise this fire, this monster, this beast, and all men would recognise it, for it dwells within the innermost soul of all of us, and always has, and always will, and you know there is no way you can defeat it. And yet you must try.", name 'dragon' 'enormous' 'scaly' 'infernal' 'monster' 'red' 'angry' 'beast', counting 0, daemon ! This daemon regulates the movement of the dragon, his attempts to set the player on fire [; ! or eat him, and finally the player's possible death through burning. if(self.counting == 0) {print "^The dragon, an enormous red scaly monster, lies on the ground in the middle of the hall. It stares at you with a big yellow eye.^";}; if(self.counting == 1 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^The dragon raises itself from the ground and approaches you, each heavy step rocking the cave floor and threatening to throw you off balance. But quick reflexes and decades of experience with heavy armour allow you to remain upright; and when you raise an angry fist at the monster, defying his threatening glare, you look positively heroic--a true knight, from a true faerytale.^"; }; if(parent(player) == grot_grot) { print "^The sight of the monster is too much even for a hardened warrior such as yourself. As you run away, the thundering footsteps of the dragon, hot in pursuit, shake the floor of the cave and threaten to send you sprawling. Its blood-curdling cries echo through the subterranean vaults--it does not intend to let you escape.^"; }; }; if(self.counting == 2 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^An immense jet of fire spews forth from the dragon's mouth and envelops you before you can so much as think of stepping aside. The sudden pain is beyond comprehension.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_grot) { print "^The dragon sticks its huge head into the passageway. Behind rows of vicious teeth burns an incinerating fire.^"; }; if(parent(player) == grot_hal) { print "^Again, you run away from the monstrosity in wild panic, carelessly crushing human bones beneath your armoured feet. Smoke billows out of the cave in copious quantities.^"; }; } if(self.counting == 3 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^An immense jet of fire spews forth from the dragon's mouth and envelops you before you can so much as think of stepping aside. The sudden pain is beyond comprehension.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_grot) { print "^An immense jet of fire spews forth from the dragon's mouth at the north end of the passageway, and envelops you before you can so much as think of running away. The sudden pain is beyond comprehension.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_hal) { print "^The passageway that leads to the dragon's cave fills up with flames, flames that burn as hot as the sun, flames that reach for you like a tentacled reaches for its prey.^"; }; }; if(self.counting == 4 && verhaaltracker.brand == 0) { if(parent(player) == grot_grot) { print "^An immense jet of fire spews forth from the dragon's mouth at the north end of the passageway, and envelops you before you can so much as think of running away. The sudden pain is beyond comprehension.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_hal) { print "^The cry of the dragon, high and unearthly, pierces the air. Instantly, a torrent of flames burst from the passageway and into the vestibule. You cannot escape. The sudden pain as the fire engulfs you is beyond comprehension.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; }; if(self.counting > 3 && parent(player) == grot_zaal) { print "^Enveloped in murderous flames, you do not see the dragon approaching; but when its teeth penetrate your armour (resisting no more than the soft skin of an apple), you become aware of your fate. With a sickening crushing sound--your armour? your bones?--the dragon brings its jaws together. A stream of blood flows out of your mouth. Death comes quickly and as a relief.^"; EndSceneOne(); }; if(verhaaltracker.brand == 2) { print "^Flames surround you on all sides, and the metal of your armour is growing unbearably hot.^"; }; if(verhaaltracker.brand == 3) { print "^Every moment, your pain increases. You beat at the flames wildly, hoping to extinguish them--but to no avail. Worse, you realise with dread that your armour is slowly starting to melt.^"; }; if(verhaaltracker.brand == 4) { print "^Melting metal penetrates your skin and commingles with your liquifying flesh. No visions, no sounds, no thoughts: only pain fills your consciousness as you fall to your knees, screaming your last scream while your vocal cords burn away. Darkness falls over you like a cool blanket.^"; EndSceneOne(); }; self.counting++; if(verhaaltracker.brand > 0) verhaaltracker.brand++; ], attack 0, life [; Attack, ThrowAt: if(self.attack > 0 || verhaaltracker.brand > 0) { print "With heroic willpower you resist the numbing pain and charge again: the monster must die, though your life be the price. Through the flames, you see the pale malicious circles of its eyes "; if(parent(bijl) == player) print "and raise your axe to plant it right between them."; if(parent(bijl) ~= player) print "and raise your fists in order to plant them right in them, blinding the monster."; print " But suddenly the dragon's tail swings in from the side and hits you, sending you flying through the hall in dizzying arc that ends when your head crashes into a wall."; if(helm has worn) print " Your helmet softens the blow, and you quickly regain your senses. Unfortunately, when you open your eyes, the dragon's monstrous head is already approaching you, its mouth wide open--and once again it bathes you in deadly fire. Death comes quickly.^"; if(helm hasnt worn) print " Your skull fractures immediately, and everything goes black.^"; EndSceneOne(); return true; }; if(self.attack == 0 && verhaaltracker.brand == 0) { if(parent(bijl) == player) print "Raising the axe, you step towards the dragon. ~Your knell has rung,~ you inform it, surprised at your own confidence. ~It's time to die.~^^"; if(parent(bijl) ~= player) print "Raising you armoured fists, you step towards the dragon. ~Your knell has rung,~ you inform it, surprised at your own confidence. ~It's time to die.~^^"; print "The monster looks at you impassively. You cannot help but stare at its double rows of arm-long teeth as you charge, but charge you do, screaming with justified rage. Then--as fast and sudden as lightning--a jet of fire bursts from dragon's the mouth and envelops you from head to toe. The pain is beyond comprehension.^"; verhaaltracker.brand = 1; }; self.attack++; return true; ], has animate scenery neuter; Object grot_spleten "cracks" grot_zaal class Prop, with description "Broad cracks run through the rock everywhere, spitting out flames bigger than men.", name 'crack' 'cracks' 'fissure' 'fissures' 'cleft' 'clefts' 'crevice' 'crevices' 'broad', before [; Enter: if(verhaaltracker.brand > 0) { print "You choose to end the pain as quickly as you can, and jump into one of the deep crevices that split the floor. Through fire and smoke you fall and fall, far longer than you had expected, until suddenly the crevice gives way to a subterranean vault spanning a lake of boiling lava. For a fraction of a heartbeat you stare in wonder at this beautiful sight--but then you fall into the lava, and your entire body melts and burns as your spirit and your soul become fire, flames, heat, light..."; EndSceneOne(); return true; } else { "All that awaits you there is death."; }; ], has pluralname container open enterable; Object grot_zaal_vuur "fire" grot_zaal class Prop, with name 'fire' 'flames' 'light' 'flame' 'huge', description "Huge flames jump from the ground wherever you look.", before [; Doof: if(verhaaltracker.brand == 0) {"There is no way you could extinguish such a sea of fire.";} else "In dismay, you beat on the flames. But to no avail--they only appear to grow bigger and hotter."; ], has ; Object draak_vuur "devouring fire" with name 'flames' 'fire' 'devouring', description "A turbulent sea of flames envelops you.", before [; Drop: "If only it were that easy!"; Doof: "In dismay, you beat on the flames. But to no avail--they only appear to grow bigger and hotter."; ], has ;